#ifndef STRATUM_DB_H
#define STRATUM_DB_H
#include <cstdio>
#include <mysql/mysql.h>
#include <csignal>
#include <cstdarg>
#include "stratum.h"
#include "coind.h"

#include "client.h"

class StratumDB {
public:
    MYSQL mysql;
};

StratumDB* dbConnect();

char* dbCleanString(StratumDB* db, char* str);

void dbClose(StratumDB* db);
void dbQuery(StratumDB* db, const char* format, ...);

void dbRegisterStratum(StratumDB* db);
void dbUpdateAlgos(StratumDB* db);
void dbUpdateCoinIds(StratumDB* db);
void dbUpdateRemotes(StratumDB* db);

void dbAddUser(StratumDB* db, StratumClient* client);
void dbAddWorker(StratumDB* db, StratumClient* client);
void dbCleanWorker(StratumDB* db, StratumClient* client);
void dbUpdateWorkers(StratumDB* db);

void dbInitUserCoind(StratumDB* db, StratumClient* client);
void dbStoreStats(StratumDB* db, StratumClient* client, json_value* stats);
void dbUpdateRenters(StratumDB* db);

#endif //STRATUM_DB_H
